import { apiService, type ApiResponse } from './api'

export interface UploadResponse {
  url: string
  filename: string
  size: number
}

class UploadService {
  // 上传图片
  async uploadImage(file: File): Promise<ApiResponse<UploadResponse>> {
    return apiService.upload<UploadResponse>('/api/upload/image', file)
  }

  // 验证图片文件
  validateImageFile(file: File): { valid: boolean, error?: string } {
    // 检查文件类型
    if (!file.type.startsWith('image/')) {
      return { valid: false, error: '只能上传图片文件' }
    }

    // 检查文件大小 (5MB)
    const maxSize = 5 * 1024 * 1024
    if (file.size > maxSize) {
      return { valid: false, error: '文件大小不能超过5MB' }
    }

    return { valid: true }
  }

  // 获取图片完整URL
  getImageUrl(path: string): string {
    // 确保路径以 / 开头
    const normalizedPath = path.startsWith('/') ? path : `/${path}`
    
    // 在生产环境中，图片通过 Nginx 直接提供服务
    // 开发环境中，需要包含后端地址
    if (window.location.hostname === 'localhost' || window.location.hostname === '127.0.0.1') {
      return `http://127.0.0.1:3000${normalizedPath}`
    }
    
    // 生产环境使用相对路径
    return normalizedPath
  }
}

export const uploadService = new UploadService()